package 链表.回文链表;

import java.util.ArrayList;
import java.util.List;

/**
 * 给你一个单链表的头节点 head ，请你判断该链表是否为回文链表。
 * 如果是，返回 true ；否则，返回 false 。
 * 输入：head = [1,2,2,1]
 * 输出：true
 * 力扣：https://leetcode-cn.com/problems/palindrome-linked-list/
 * 第234题
 * */
/**
 * 解题思路：
 * 要回文吗，第一反应就是双指针
 * 但是那是数组里面的
 * 所以要将链表里面的值全部放到数组里面
 * 存入数组里面，然后双指针进行比较
 * */

class Solution0 {
    public boolean isPalindrome(ListNode head) {
         List<Integer> hui = new ArrayList<>();
         ListNode current = head;
         while(current != null){
            hui.add(current.val);
            current = current.next;
         }
         int front = 0;
         int back = hui.size() - 1;
         while(front < back){
            if(!hui.get(front).equals(hui.get(back))){
                return false;
            }
            front++;
            back--;
         }
         return true;
    }
}